﻿/*	Test rozkazu DzD - Dzielenia Długiego

 Dane:

[0o02000] = 0o1500000000000; =0.01101	// dzielna  = 13/32
[0o02001] = 0o3600000000000; =0.11110	// dzielnik = 30/32


 Długi iloraz, dzielna/dzielnik = 13/30, zostanie zapisany w komórkach [0o10000]..[0o10005]:

[0o10000] = bity   0... 38	Ω = bit  39	dla N=43	(bit 0 = bit znaku)
[0o10001] = bity  39... 77	Ω = bit  78	dla N=82
[0o10002] = bity  78...116	Ω = bit 117	dla N=121
[0o10003] = bity 117...155	Ω = bit 156	dla N=160
[0o10004] = bity 156...194	Ω = bit 195	dla N=199
[0o10005] = bity 195...233	Ω = bit 234	dla N=238

 Najdalsze możliwe do uzyskania bity ilorazu znajdą się w komórce [0o10206],
 a po zaokrągleniu bitem Omega dodatkowo będą zapisane  w komórce [0o10406]:

[0o10206] = bity 212...250	Ω = bit 251	dla N=255
[0o10406] = bity 212...250	zaokrąglone bitem Ω


 Wynik:
<-------- [0o10000]: bity 0..38 -------><------- [0o10001]: bity 39..77 ------><------ [0o10002]: bity 78..116 ------><------ [0o10003]: bity 117..155 -----><------ [0o10004]: bity 156..194 -----><------ [0o10005]: bity 195..233 ----->
0.01101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101
<                                      ><                                     ><                                     ><                                     ><                [0o10206]: niezaokrąglone bitem Omega  011101110111011101110111011101110111011
                                                                                                                                                                              [0o10406]:    zaokrąglone bitem Ω=1:   011101110111011101110111011101110111100
                                                                                                                                                                                                                     <----------- bity 212..250 ----------->
 Słowo w komórce [0o10206], na pozycjach bitowych 22..38 zawiera już tylko
 17 dodatkowych bitów ilorazu w uzupełnieniu do wcześniej otrzymanych.
 Bity 0..21 tego słowa pokrywają się z bitami 17..38 poprzedniego słowa,
 zapisanego w komórce [0o10005].

 Słowo w komórce [0o10406] zawiera zaokrągloną bitem Omega wersję słowa z komórki [0o10206].
 Zaokrąglenie to (normalne) polega na dodaniu bitu Omega na najmłodszej pozycji
 bitowej słowa, z ewentualnym przeniesiem na starsze pozycje.
 Zatem bity 0..21 słowa [0o10406] mogą być inne niż te same bity słowa [0o10206]
 i bity 17..38 słowa zapisanego w komórce [0o10005]. Co więcej, zaokrąglenie może
 wymagać propagacji przeniesienia na wszystkie komórki zawierające starsze bity,
 a nawet spowodować nadmiar (przeniesienie na bit znaku ilorazu).

 Bit nr 0 w początkowej komórce ilorazu jest bitem znaku ilorazu.
 W następnych komórkach ilorazu, bity nr 0 są zwykłymi bitami rozwinięcia liczby.

*/


;Etyk:	Rozkaz			Komentarz
;=====	===================	================================
	:401 00000:		Adres początku programu

TEST	:050 02000   +   00	A=[licznik]
	:015 02001   +   00	M=[mianownik], M, A/=M
	:401 10000   +   00	[iloraz0] = A		bity   0..38	Ω = bit 39

	:050 02000   +   00	A=[licznik]
	:716 00122   +   00	DzD: A //= M, 82
	:401 10001   +   00	[iloraz1] = A		bity  39..77	Ω = bit 78

	:050 02000   +   00	A=[licznik]
	:716 00171   +   00	DzD: A //= M, 121
	:401 10002   +   00	[iloraz2] = A		bity  78..116	Ω = bit 117

	:050 02000   +   00	A=[licznik]
	:716 00240   +   00	DzD: A //= M, 160
	:401 10003   +   00	[iloraz3] = A		bity 117..155	Ω = bit 156

	:050 02000   +   00	A=[licznik]
	:716 00307   +   00	DzD: A //= M, 199
	:401 10004   +   00	[iloraz4] = A		bity 156..194	Ω = bit 195

	:050 02000   +   00	A=[licznik]
	:716 00356   +   00	DzD: A //= M, 238
	:401 10005   +   00	[iloraz5] = A		bity 195..233	Ω = bit 234

	:050 02000   +   00	A=[licznik]
	:716 00377   +   00	DzD: A //= M, 255	Najdalsze możliwe do uzyskania bity ilorazu
	:401 10206   +   00	[iloraz206] = A		bity 212...250	Ω = bit 251

	:426 00000   +   00	Okr: A += Omega		Najdalsze możliwe do uzyskania bity ilorazu
	:401 10406   +   00	[iloraz406] = A		po zaokrągleniu normalnym bitem Omega

	:726 17777 TEST  00	Stop 17777


	:401 02000:		Przykładowe dane
	:150 00000 00000 00	=0.01101	// dzielna  = 13/32
	:360 00000 00000 00	=0.11110	// dzielnik = 30/32


;=======Koniec programu=========================================
